﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Services;
using System.Web.Services;
using Espam.Idiomas.Decimo.Tesis.Negocio;
using Espam.Idiomas.Decimo.Tesis.Web;


namespace Espam.Idiomas.Decimo.Tesis.Web
{
    public partial class UI_RegisterStudent : System.Web.UI.Page
    {
        string validaSession = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
                Response.Cache.SetAllowResponseInBrowserHistory(false);
                Response.Cache.SetNoStore();

                if (Session["userEspamIdiomasVarSession001"] == null || Session["rolEspamIdiomasVarSession003"] == null)
                {
                    validaSession = "NoHaIniciadoSession";
                    Response.Redirect("UI_Login.aspx?validaSession=" + validaSession);
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Docente")
                {
                    Response.Redirect("UI_DashboardTeacher.aspx");
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Administradores")
                {
                    btnGuardarDocente.Attributes.Add("onclick", "this.disabled=true,this.value='Procesando...';" + ClientScript.GetPostBackEventReference(btnGuardarDocente, null) + ";");
                    lblvalida.Text = "";
                    lblvalida.Visible = false;
                    txtBuscar.AutoPostBack = true;
                    cargaDllGenero();
                    ddlNivel.AutoPostBack = true;
                }
                else if (Session["userEspamIdiomasVarSession001"] != null && Session["rolEspamIdiomasVarSession003"].ToString() == "Alumno")
                {
                    Response.Redirect("UI_DashboardStudents.aspx");
                }
            }
            else
            {
                lblvalida.Text = "";
                lblvalida.Visible = false;
            }
        }

        protected void btnGuardarDocente_Click(object sender, EventArgs e)
        {
            string mensaje = "";
            Matriculas oMatricula = new Matriculas();
            if (ddlCarrera.SelectedIndex==0 || ddlSemestre.SelectedIndex==0 ||ddlNivel.SelectedIndex==0 ||ddlHorario.SelectedIndex==0)
            {
                ScriptManager.RegisterStartupScript(this.Page, GetType(), "MostarMensaje", "mensajeMal('VERIFIQUE TODOS LOS CAMPOS, ALGUNOS CAMPOS OBLIGATORIOS SE ENCUENTRAN VACIOS')", true);
            }
            else
            {              
                oMatricula.nombres = txtNombres.Text.ToUpper();
                oMatricula.apellidos = txtApellidos.Text.ToUpper();
                oMatricula.documento = txtDocumento.Text;
                oMatricula.idGenero = int.Parse(ddlGenero.SelectedValue);
                oMatricula.nivel = int.Parse(ddlNivel.SelectedValue);
                oMatricula.idModulo = int.Parse(ddlHorario.SelectedValue);
                oMatricula.idSemestre = int.Parse(ddlSemestre.SelectedValue);
                oMatricula.idCarrera = int.Parse(ddlCarrera.SelectedValue);
                oMatricula.fecha = DateTime.Parse(DateTime.Now.ToShortDateString());
                mensaje = oMatricula.MatriculaLocal();
                if (mensaje == "MATRICULADO CORRECTAMENTE")
                {
                    ScriptManager.RegisterStartupScript(this.Page, GetType(), "MostarMensaje", "mensajeBien('REGISTRO DE MÁTRICULA GUARDADO CORRECTAMENTE')", true);
                }
                else
                {
                    ScriptManager.RegisterStartupScript(this.Page, GetType(), "MostarMensaje", "mensajeMal('ERROR AL INGRESAR EL REGISTRO DE MÁTRICULA')", true);
                }
            }
           
        }
        /// <summary>
        /// cambios santanderv (cree un service para renderizar el combo xq no queria cargar ) 
        /// </summary>
        //[ScriptMethod()]
        //[WebMethod]
        //public  string[] GetAlumno(string prefixText, int count, string contextKey)
        //{
        //    List<string> lista = new List<string>();
        //    Usuarios oUsu = new Usuarios();
        //    oUsu.documento = prefixText;
        //    lista = oUsu.GetUsuariosAutocomplete();
        //    return lista.ToArray();
        //}
        private void cargaDllGenero()
        {
            ListadoGeneros oListado = new ListadoGeneros();
            List<Generos> lista = new List<Generos>();
            lista = oListado.getGeneros();
            lista.Insert(0, new Generos() { idGenero = 0, genero = "<seleccione un genero>" });
            ddlGenero.DataSource = lista;
            ddlGenero.DataTextField = "genero";
            ddlGenero.DataValueField = "idGenero";
            ddlGenero.DataBind();
            //ddlNivel
            ListadoNiveles oListadoNivel = new ListadoNiveles();
            List<Nivel> listaNivel = new List<Nivel>();
            Ciclos oCiclo = new Ciclos();
            oListadoNivel.ciclo = oCiclo.GetMaxCiclo();
            listaNivel = oListadoNivel.getNiveles();
            listaNivel.Insert(0, new Nivel() {idNivel=0, equivalente="<seleccione un nivel>" });
            ddlNivel.DataSource = listaNivel;
            ddlNivel.DataTextField = "equivalente";
            ddlNivel.DataValueField = "nivel";
            ddlNivel.DataBind();
            //ddlCarrera
            ListadoCarreras oListadoCarrera = new ListadoCarreras();
            List<Carreras> listaCarreras = new List<Carreras>();
            listaCarreras = oListadoCarrera.GetCarreras();
            listaCarreras.Insert(0, new Carreras() { idCarreras=0,carrera="<seleccione una carrera>"});
            ddlCarrera.DataSource = listaCarreras;
            ddlCarrera.DataTextField = "carrera";
            ddlCarrera.DataValueField = "idCarreras";
            ddlCarrera.DataBind();
            //ddlSemestre
            ListadoSemestres oListadoSemestres = new ListadoSemestres();
            List<Semestre> listaSemestres = new List<Semestre>();
            listaSemestres = oListadoSemestres.GetSemestres();
            listaSemestres.Insert(0, new Semestre() { idSemestre=0,semestre="<seleccione un semestre>"});
            ddlSemestre.DataSource = listaSemestres;
            ddlSemestre.DataTextField = "semestre";
            ddlSemestre.DataValueField = "idSemestre";
            ddlSemestre.DataBind();
        }
        protected void txtBuscar_TextChanged(object sender, EventArgs e)
        {
            ViewState["alumno"] = null;
            if (string.IsNullOrEmpty(txtBuscar.Text))
            {
                
            }
            else
            {
                Usuarios oUsuario = new Usuarios();
                oUsuario.apellidos = txtBuscar.Text;
                List<Usuarios> lista = new List<Usuarios>();
                lista = oUsuario.GetDatosAlumnoRegistrado();
                if (lista.Count>0)
                {
                    
                    txtNombres.Text = lista[0].nombres;
                    txtApellidos.Text = lista[0].apellidos;
                    txtDocumento.Text = lista[0].documento;
                    ddlGenero.SelectedValue = lista[0].idGenero.ToString();
                    ddlSemestre.SelectedValue = lista[0].idSemestre.ToString();
                    ddlCarrera.SelectedValue = lista[0].idCarrera.ToString();
                    lblUltimoModuloAprobado.Text = lista[0].UltimoNivelAprobado;
                    lblEstadoNivel.Text = lista[0].estado;
                    ViewState["alumno"] = lista[0].idAlumno;
                    hplCalificaciones.Visible = true;

                }
                else
                {
                    hplCalificaciones.Visible = false;
                    ScriptManager.RegisterStartupScript(this.Page, GetType(), "MostarMensaje", "mensajeMal('EL ALUMNO NO SE ENCUENTRA REGISTRADO EN EL SISTEMA')", true);
                    LimpiarCampos();
                }
                
            }
        }

        protected void ddlNivel_SelectedIndexChanged(object sender, EventArgs e)
        {
            Modulos oModulos = new Modulos();
            List<Modulos> lista = new List<Modulos>();
            oModulos.nivel = int.Parse(ddlNivel.SelectedValue);
            lista = oModulos.GetHorariosByRegisterLocal();
            if (lista.Count>0)
            {
                lista.Insert(0, new Modulos() { idModulo = 0, horario = "<seleccione un horario>" });
                ddlHorario.DataSource = lista;
                ddlHorario.DataTextField = "horario";
                ddlHorario.DataValueField = "idModulo";
                ddlHorario.DataBind();
            }
            else
            {
                lista.Insert(0, new Modulos() { idModulo = 0, horario = "<sin cupos en este nivel>" });
                ddlHorario.DataSource = lista;
                ddlHorario.DataTextField = "horario";
                ddlHorario.DataValueField = "idModulo";
                ddlHorario.DataBind();
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("UI_RegisterStudent.aspx");
        }
        private void LimpiarCampos()
        {
            txtApellidos.Text = string.Empty;
            txtBuscar.Text = string.Empty;
            txtDocumento.Text = string.Empty;
            txtNombres.Text = string.Empty;
            ddlCarrera.SelectedIndex = 0;
            ddlGenero.SelectedIndex = 0;
            ddlHorario.SelectedIndex = 0;
            ddlNivel.SelectedIndex = 0;
            ddlSemestre.SelectedIndex = 0;
        }

        protected void hplCalificaciones_Click(object sender, EventArgs e)
        {
            CargarGV();
            ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "openModal();", true);
        }

        protected void CargarGV()
        {
            Usuarios oUsuarios = new Usuarios();
            List<Usuarios> lista = new List<Usuarios>();
           
            oUsuarios.idAlumno = (int)ViewState["alumno"];
            lista = oUsuarios.GetCalificacionesByAlumnoHistorial();
            if (lista.Count > 0)
            {
                gvCalificaciones.DataSource = lista;
                gvCalificaciones.DataBind();
            }
            else
            {
                gvCalificaciones.DataSource = null;
                gvCalificaciones.DataBind();
            }
            
        }
    }
}